package com.culture.bootdemo.common.basevo;

import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @author ：wen
 * @date ：Created in 2019/8/2 18:06
 * @description：:
 */
@Getter
@AllArgsConstructor
@ApiModel(description = "系统响应码枚举")
public enum ResultCode {

    /**
     * 接口调用成功
     */
    SUCCESS(0, "Request Successful"),

    /**
     * 服务器暂不可用，建议稍候重试。建议重试次数不超过3次。
     */
    FAILURE(-1, "System Busy"),

    /**
     * 找不到地址
     */
    NOT_FOUND(40404, "Not Found"),

    /**
     * 消息不能读取
     */
    MESSAGE_NOT_READABLE(40405, "Message Not Readable"),

    /**
     * 重定向至登录页面
     */
    REDIRECT_LOGIN_CODE(30302, "Please login again"),

    /**
     * 不接受的媒体类型
     */
    UNSUPPORTED_MEDIA_TYPE(41415, "Unsupported Media Type"),

    /**
     * 不支持当前请求方法
     */
    METHOD_NOT_ALLOWED(40405, "Method Not Allowed"),

    /**
     * 请求参数缺失
     */
    REQUEST_PARAM_MISSING_ERROR(40021, "Request parameter missing error"),


    /**
     * 请求参数格式有误
     */
    REQUEST_PARAM_FORMAT_ERROR(40023, "Request parameter format is incorrect"),

    /**
     * 请求参数校验错误
     */
    REQUEST_PARAM_VALIDATION_ERROR(40025, "Request parameter validation error"),


    /**
     * 参数有异常返回
     */
    PARAMETER_ERROR(40001, "parameter[参数异常:参数为空或者参数类型不符]"),

    /**
     * 权限验证失败
     */
    PERMISSIONS_ERROR(40101, "permissions[签名错误，权限验证失败，访问被拒]"),

    /**
     * 异常返回
     */
    ERROR(-1, "[服务内部错误]"),

    /**
     * 参数有异常返回
     */
    DUPLICATE_ERROR(40003, "Duplicate[参数异常:重复输入]"),

    /**
     * token生成异常
     */
    TOKENException(-1, "[token生成异常]"),

    /**
     * 空指针异常
     */
    NullPointerException(40404, "[空指针异常]"),
    /**
     * 下标越界异常
     */
    ArrayIndexOutOfBoundsException(-1, "[下标越界异常]"),
    /**
     * 输入输出异常
     */
    IOException(-1, "[IO文件上传异常]"),
    /**
     * 操作数据库异常
     */
    SQLException(-1, "[数据保存异常，请检查后重试！]"),
    /**
     * 类型强制转换异常
     */
    ClassCastException(-1, "[类型强制转换异常]"),
    /**
     * 文件未找到异常
     */
    FileNotFoundException(40404, "[文件未找到异常]"),
    /**
     * 字符串转换为数字异常
     */
    EOFException(-1, "[字符串转换为数字异常]"),
    /**
     * 文件已结束异常
     */
    NumberFormatException(-1, "[文件已结束异常]"),
    /**
     * 方法未找到异常
     */
    NoSuchMethodException(-1, "[方法未找到异常]"),
    /**
     * 参数类型匹配异常
     */
    MethodArgumentTypeMismatchException(-1, "[参数类型不匹配异常]"),
    /**
     * 文件上传异常
     */
    MultipartException(-1, "[文件上传异常]");

    final int code;

    final String msg;

}
